package ucla.encuestaMatic.vista.ventanas;

import java.util.ArrayList;
import java.util.List;

import ucla.encuestaMatic.controlador.interfaces.IServicioAdministracionDefinicionEncuesta;
import ucla.encuestaMatic.modelo.beans.Numeros;
import ucla.encuestaMatic.modelo.beans.RespuestaCerrada;
import ucla.encuestaMatic.modelo.beans.TipoRespuesta;
import ucla.encuestaMatic.modelo.data.OpcionPregunta;
import ucla.encuestaMatic.modelo.data.Pregunta;

import nextapp.echo2.app.Column;
import nextapp.echo2.app.Component;
import nextapp.echo2.app.ContentPane;
import nextapp.echo2.app.Extent;
import nextapp.echo2.extras.app.layout.TabPaneLayoutData;

import com.obelisco.vista.componentes.ComponenteDatosListener;
import com.obelisco.vista.componentes.ListaBase;
import com.obelisco.vista.componentes.TipoFuncion;
import com.obelisco.vista.controles.BindingDateField;
import com.obelisco.vista.controles.BindingTextArea;
import com.obelisco.vista.controles.BindingTextField;
import com.obelisco.vista.controles.Grid;
import com.obelisco.vista.controles.Label;
import com.obelisco.vista.controles.SelectField;
import com.obelisco.vista.plantillas.VentanaBase;

public class PaneOpcionPreguntaDefinicionEncuesta extends ContentPane implements ComponenteDatosListener {

	private OpcionPregunta opcionPregunta;
	private Pregunta pregunta;
	private IServicioAdministracionDefinicionEncuesta servicioAdministracionDefinicionEncuesta;
	
	// Primer Tab
	BindingTextField txtEnunciado;
	BindingTextArea txtDescripcion;
	SelectField cmbOpcionExcluyente;
	
	
	public void onCancelar() {
		// TODO Auto-generated method stub
		
	}

	public void onConfirmarCambios(Object objeto, TipoFuncion tipo, String nombre) {
		// TODO Auto-generated method stub
		this.opcionPregunta.setExcluyente(((RespuestaCerrada)this.cmbOpcionExcluyente.getSelectedItem()).getId().toString());
		this.opcionPregunta.setPregunta(this.pregunta);
		this.servicioAdministracionDefinicionEncuesta.validarOpcionPregunta(this.opcionPregunta);		
		this.pregunta.getOpcionPreguntas().add(this.opcionPregunta);
	}

	public void onConfirmarEliminacion(Object object) {
		// TODO Auto-generated method stub
		
	}

	public void onConsultar(Object objeto) {
		// TODO Auto-generated method stub
		this.onModificar(objeto);
		this.setEnabled(false);
	}

	public void onCrear() {
		// TODO Auto-generated method stub
		
	}

	public void onFuncionPersonalizada(Object objeto, TipoFuncion funcion, String nombre) {
		// TODO Auto-generated method stub
		
	}

	public void onIncluir(Object objeto) {
		// TODO Auto-generated method stub
		
	}

	private void initComponents() {
		this.removeAll();
		this.setEnabled(true);
		
		Grid grid = new Grid();
		grid.setStyleName("Obelisco.GridPaneDialogo");
		grid.setSize(2);
		grid.setColumnWidth(0, new Extent(150, Extent.PX)); //PX denota pixeles						
		
		grid.add(new Label("Enunciado"));
		this.txtEnunciado = new BindingTextField(250);
		this.txtEnunciado.setMaximumLength(250);
		grid.add(this.txtEnunciado);
		
		grid.add(new Label("Descripcion"));
		this.txtDescripcion = new BindingTextArea(250,50);
		this.txtDescripcion.setMaximumLength(250);
		grid.add(this.txtDescripcion);
		
		grid.add(new Label("Excluyente"));
		this.cmbOpcionExcluyente = new SelectField(50);
		grid.add(this.cmbOpcionExcluyente);
		
		Column columna = new Column();
		columna.add(grid);
		this.add(columna);
	}
	
	private void cargarCombosYListas() {
		this.cmbOpcionExcluyente.setItemDefectoActivado(false);
		this.cmbOpcionExcluyente.inicializarDatos(RespuestaCerrada.getRespuestasCerradas(), "nombre", "id");
		if ((this.pregunta.getTipoRespuesta() == null) ||
			(this.pregunta.getTipoRespuesta().equals(TipoRespuesta.SELECCION_MULTIPLE))) {
			this.cmbOpcionExcluyente.setSelectedItemPorId(RespuestaCerrada.NO);
			this.cmbOpcionExcluyente.setEnabled(true);
		}
		else if (this.pregunta.getTipoRespuesta().equals(TipoRespuesta.SELECCION_SIMPLE)) {
			this.cmbOpcionExcluyente.setSelectedItemPorId(RespuestaCerrada.SI);
			this.cmbOpcionExcluyente.setEnabled(false);
		}
	}
	
	private void setBindings() {
		this.txtEnunciado.setBinding(this.opcionPregunta, "enunciado");
		this.txtDescripcion.setBinding(this.opcionPregunta, "descripcion");
	}
	
	public void onInicializar() {
		this.initComponents();
		this.setBindings();
		this.cargarCombosYListas();
	}

	public void onListaParametros(List listaParametros) {
		// TODO Auto-generated method stub
		this.pregunta = (Pregunta)listaParametros.get(0);
	}

	public void onModificar(Object objeto) {
		// TODO Auto-generated method stub
		this.cmbOpcionExcluyente.setSelectedItemPorId(this.opcionPregunta.getExcluyente());
	}

	public void onObjetoEntidad(Object objeto) {
		// TODO Auto-generated method stub
		this.opcionPregunta = (OpcionPregunta)objeto;
	}

	public boolean onValidarDatos(Object objeto, TipoFuncion tipo, String nombre) {
		// TODO Auto-generated method stub
		return true;
	}

	
	// Getter y Setter
	public IServicioAdministracionDefinicionEncuesta getServicioAdministracionDefinicionEncuesta() {
		return servicioAdministracionDefinicionEncuesta;
	}

	public void setServicioAdministracionDefinicionEncuesta(
			IServicioAdministracionDefinicionEncuesta servicioAdministracionDefinicionEncuesta) {
		this.servicioAdministracionDefinicionEncuesta = servicioAdministracionDefinicionEncuesta;
	}

}
